package main

import (
	"fmt"
	"log"
	"os"
)

func main() {
	f, err := os.OpenFile("day12/log/log.txt",
		os.O_CREATE| // 文件不存在创建它
			os.O_WRONLY| // 只写
			os.O_APPEND, // 文件 EOF 末尾追加写入
		os.ModePerm,
	)
	if err != nil {
		fmt.Println("打开文件失败", err)
		return
	}

	defer f.Close() // 关闭文件,释放资源，包括文件描述符
	// f.write(b []byte) // os.File实现 Write 方法，实现了 Write 接口

	log.Default() // 内建的缺省的不对包外的 std logger, 缺省 logger
	log.Default().SetOutput(os.Stdout)
	log.Default().SetPrefix("##")
	log.Default().SetFlags(log.Ldate | log.Lmsgprefix)

	log.Println("Hello, World!")

	// log.Fatalf("我是类似 printf %v", "xyz")
	// log.Panic("我是错误的日志")
	fmt.Println("~~~~~~~~~~~~~~~~~~~~~~~~~~")
	// 自定义 logger
	// out可写对象，prefix 消息前缀，flag 标记

	l1 := log.New(f, "Info:", log.Ldate|log.Ltime|log.LUTC|log.Lmsgprefix)
	l1.Printf("这是我定义的l1 %v", 11111111)
	l2 := log.New(f, "Error:", log.LstdFlags|log.Lmsgprefix)
	l2.Printf("这是我定义的l2 %v", 2222)

}
